//首页处理模块

var async=require('async');
var config=require('../config');
var Shop=require('../model/Shop');
var Food=require('../model/Food');
var Order=require('../model/Order');
var Time=require('../utils/Time');
var redis=require('../model/redis');


//获取菜单列表
var getFoodList=function(data,callback){
	Food.all(function(err,foods){
		if(err) return callback(err);
		data["foods"]=[];
		for(var i=0;i<foods.length;i++){
			data["foods"].push(JSON.parse(foods[i]));
		}
		callback(null,data);
	});
};

//获取商家列表
var getShopList=function(data,callback){
	Shop.all(function(err,shopes){
		if(err) return callback(err);
		data["shopes"]=[];
		for(var i=0;i<shopes.length;i++){
			data["shopes"].push(JSON.parse(shopes[i]));
		}
		callback(null,data);
	})
};


//首页
exports.index=function(req,res){
    //页面渲染数据
	var data={};
	data["isExpire"]=!Time.isInValidTime();
	data["success"]=true;
	data["msg"]="";
	data["name"]=req.session.user.name;
	data["isAdmin"]=req.session.user.isAdmin;
	data["foods"]=[];
	data["shopes"]=[];

	var userId=req.session.user.id;
	var key="order:"+userId;
	//获取用户订单
	var getUserOrder=function(callback){
		redis.exists(key,function(err,reply){
			if(err){
				data["success"]=false;
				data["msg"]=" 缓存操作失败!";
				return callback(err);
			}
			else{
			    //key已经存在
			    if(reply==1){
			    	data["success"]=false;
			    	data["msg"]=" 亲，您已经点餐了,记得主动向管理员付款哟！";
			    }
			}
			if(data["isExpire"]){
				data["msg"]=" 亲,不好意思,非点餐时间无法下单,请记得准时点餐哟！";
			}
			callback(null,data); 
		});
	};

	async.waterfall([getUserOrder,getFoodList,getShopList],function(err,result){
		data=result||data;
		return res.render('index',data);
	});

}


//下单操作（Ajax操作）
exports.order=function(req,res){
	var data={};
	//不在点餐时间
	if(!Time.isInValidTime()){
		data.success=false;
		data.msg=" 亲,不好意思,非点餐时间无法下单,请记得准时点餐哟!";
		return res.send(data);
	}
	var orders=req.body.orders||[];
	if(orders.length<1){
		data.success=false;
		data.msg=" 亲,您至少点一份吧？"
		return res.send(data);
	}
	var userId=req.session.user.id;
	var key="order:"+userId;
	redis.exists(key,function(err,reply){
		if(err){
			data.success=false;
			data.msg=" 缓存操作失败!";
			return res.send(data);
		}
		else{
			//key已经存在
			if(reply==1){
				data.success=false;
				data.msg=" 亲,不好意思,您已经点餐了,无法下单!";
				return res.send(data);
			}
			else{
				var orderObj={};
				orderObj["order"]=orders.toString();
				orderObj["time"]=Time.getNow();
				redis.set(key,JSON.stringify(orderObj));
				var time=Time.getTime()+" ";
				//判断当前是上午,还是下午
				if(Time.isAM()){
					time+=config.redisValidTime[0];
				}
				else{
					time+=config.redisValidTime[1];
				}
				//设置key有效时间
				var expireTime=Math.round(Date.parse(time)/1000);
				redis.expireat(key,expireTime);
				data.success=true;
				data.msg=" 点餐成功,记得付款哟!";
				return res.send(data);
			}
		}
	})
}

//取消订单
exports.unorder=function(req,res){
	var msg;
	//不在点餐时间
	if(!Time.isInValidTime()){
		msg="亲,不好意思,非点餐时间无法执行该操作!";
		return res.send(msg);
	}
	
	var userId=req.session.user.id;
	var key="order:"+userId;
	redis.exists(key,function(err,reply){
		if(err){
			msg="缓存操作失败!";
			return res.send(msg);
		}
		else{
			//key已经存在
			if(reply!=1){
				msg="亲,您压根就木有点餐,无法执行该操作!";
				return res.send(msg);
			}
			else{
				redis.del(key,function(err,reply){
					if(err||reply!=1){
						msg="操作失败!";
						return res.send(msg);
					}
					if(reply==1){
						msg="取消订单成功,欢迎您继续使用!";
						return res.send(msg);
					}
				})
			}
		}
	})
}


//支付宝支付
exports.pay=function(req,res){
	var data={};
	data["name"]=req.session.user.name;
	data["isAdmin"]=req.session.user.isAdmin;
	return res.render('pay',data);
}
